//
//  main.m
//  OC09_类的扩展(类目_扩展_代理)
//
//  Created by dllo on 15/12/10.
//  Copyright © 2015年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "NSString+AddMethod.h"
#import "NSString+First.h"
#import "AddressBook.h"
#import "Contact.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        
        
        
# pragma mark - 知识点1 category(类目,分类)
        /**
         *  类目的2个作用:
         
         * 1. 编写.h文件时,将众多方法进行分类,以便查看接口时方便(如系统类的.h文件)
         * 2. 扩展类的方法, 一般针对没有源代码的类,(如系统NSString类等)
         *
         */
        /** 需求: jk
         * 详见类目文件 NSString + AddMethod
         */
        [NSString sayHi];
        
        /*为NSString类扩展一个新的方法，要求获取字符串的首字母并且将该首字母大写。*/
        
        NSString *str = @"sad";
        NSLog(@"%@",[str getFirst]);
        
# pragma mark - 知识点2 类的延展
        
        /**
         * 需求: 使用延展的目的:
         * 有一些属性和方法,  类的内部实现需要,但不希望外部访问.所以需要将这些属性和方法隐藏起来,即私有化.
         * 详见 AddressBook类
         */
        
        
        AddressBook *ab = [[AddressBook alloc]init];
        Contact *con1 = [[Contact alloc] init];
        con1.name = @"Tome";
        [ab addContact:con1];
        
        
        
        
        
        
    }
    return 0;
}
